﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas_Cadastros__popup_ecpWfAlertaParametroAcoesJudiciais : PageBase
{
    private int idWfConfigData = 0;
    private int idWfConfig = 0;
    private int idWfConfigParametro = 0;
    private string tipo = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["IdWfConfigData"] != null)
            idWfConfigData = Int32.Parse(Request.QueryString["IdWfConfigData"].ToString());

        if (Request.QueryString["IdWfConfig"] != null)
            idWfConfig = Int32.Parse(Request.QueryString["IdWfConfig"].ToString());

        if (Request.QueryString["Tipo"] != null)
            tipo = Request.QueryString["Tipo"].ToString();

        if (Request.QueryString["IdWfConfigParametro"] != null)
            idWfConfigParametro = Int32.Parse(Request.QueryString["IdWfConfigParametro"].ToString());

        if (!IsPostBack)
        {
            PreencheDescricao();
            CarregaDados();
        }
    }

    #region Eventos

    #region Geral
    protected void btnGravar_Click(object sender, EventArgs e)
    {
        Salvar();
    }
    protected void btnFechar_Click(object sender, EventArgs e)
    {
        //ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);
        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('" + tipo + "');", true);
    }
    #endregion

    #region GridPatrocinador
    protected void GridGrupoPatrocinador_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {
            CarregaGruposPatrocinador();
        }
    }
    protected void ChkSelectedPat(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridGrupoPatrocinador.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = true;
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridGrupoPatrocinador.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = false;
            }
        }
    }
    #endregion

    #region GridPrestador
    protected void GridGrupoPrestador_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {
            CarregaGruposPrestador();
        }
    }
    protected void ChkSelectedPrest(object sender, EventArgs e)
    {
        if ((sender as CheckBox).Checked)
        {
            foreach (GridDataItem dataItem in GridGrupoPrestador.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = true;
            }
        }
        else
        {
            foreach (GridDataItem dataItem in GridGrupoPrestador.MasterTableView.Items)
            {
                (dataItem.FindControl("chkGente") as CheckBox).Checked = false;
            }
        }
    }
    #endregion

    #endregion

    #region Metodos

    #region Geral
    private void CarregaDados()
    {
        if (idWfConfigParametro != 0)
        {
            CarregaNivel(rcbNivel, true);

            WorkflowConfigParametro wfParametro = new WorkflowConfigParametro(idWfConfigParametro);

            txtDias.Text = wfParametro.ParametroDia.ToString();
            rcbNivel.SelectedValue = wfParametro.WfNivel.IdWfNivel.ToString();
            rcbNivel.Enabled = false;
            txtDias.Enabled = false;
        }
        else
        {
            CarregaNivel(rcbNivel, false);
            txtDias.Text = "0";
            txtDias.Enabled = false;
            rcbNivel.SelectedIndex = 0;
            rcbNivel.Enabled = false;
        }
    }
    private void Salvar()
    {
        try
        {
            List<GrupoEmail> listGrupoEmail = new List<GrupoEmail>();

            //Patrocinadores - Grupo
            foreach (GridDataItem dataItem in GridGrupoPatrocinador.MasterTableView.Items)
            {
                int idGrupoEmail = int.Parse(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IdGrupoEmail"].ToString());

                bool isAdiciona = (dataItem.FindControl("chkGente") as CheckBox).Checked;

                if (isAdiciona)
                {
                    GrupoEmail grupoEmail = new GrupoEmail(idGrupoEmail);
                    listGrupoEmail.Add(grupoEmail);
                }
            }

            //Prestadores - Grupo 
            foreach (GridDataItem dataItem in GridGrupoPrestador.MasterTableView.Items)
            {
                int idGrupoEmail = int.Parse(dataItem.OwnerTableView.DataKeyValues[dataItem.ItemIndex]["IdGrupoEmail"].ToString());

                bool isAdiciona = (dataItem.FindControl("chkGente") as CheckBox).Checked;

                if (isAdiciona)
                {
                    GrupoEmail grupoEmail = new GrupoEmail(idGrupoEmail);
                    listGrupoEmail.Add(grupoEmail);
                }
            }

            WorkflowConfigParametro wfParametro = new WorkflowConfigParametro();

            if (idWfConfigParametro != 0)
                wfParametro.IdWfConfigParametro = idWfConfigParametro;

            if (idWfConfigData != 0)
                wfParametro.WfConfigData = new WorkflowConfigData(idWfConfigData);

            if (idWfConfig != 0)
                wfParametro.WfConfig = new WorkflowConfig(idWfConfig);

            wfParametro.ParametroDia = int.Parse(txtDias.Text);
            wfParametro.WfNivel = new WorkflowNivel(int.Parse(rcbNivel.SelectedValue));

            wfParametro.GrupoEmail = listGrupoEmail;

            wfParametro.Salvar();

            lblResultado.Text = "Dados salvos com sucesso!";
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro: " + ex.Message;
        }
    }
    private List<WorkflowConfigParametro> RetornaWfParametroAlerta(int id, string tipo)
    {
        WorkflowConfigParametro wfParametro = new WorkflowConfigParametro();
        List<WorkflowConfigParametro> listParametrosAlerta = wfParametro.SelectAlerta(id, tipo);

        return listParametrosAlerta;
    }
    protected void CarregaNivel(RadComboBox combo, bool isTodos)
    {
        WorkflowNivel wfNivel = new WorkflowNivel();
        List<WorkflowNivel> listWfNivel = wfNivel.SelectAlerta();

        if (!isTodos)
        {
            List<WorkflowConfigParametro> listParametros = null;

            if (idWfConfigData != 0)
                listParametros = RetornaWfParametroAlerta(idWfConfigData, "Composto");

            if (idWfConfig != 0)
                listParametros = RetornaWfParametroAlerta(idWfConfig, "Simples");
        }

        combo.DataTextField = "Descricao";
        combo.DataValueField = "IdWfNivel";
        combo.DataSource = listWfNivel;
        combo.DataBind();
    }
    protected void CarregaAtestado(RadComboBox combo, bool isTodos)
    {
        TipoAtestado tipoAtestado = new TipoAtestado();
        List<TipoAtestado> listAtestado = tipoAtestado.SelectAll(true);

        if (!isTodos)
        {
            List<WorkflowConfigParametro> listParametros = null;
            listParametros = RetornaWfParametroAlerta(idWfConfig, "Simples");

            foreach (WorkflowConfigParametro itemParametro in listParametros)
            {
                foreach (TipoAtestado itemAtestado in listAtestado)
                {
                    if (itemParametro.TipoAtestado.IdTipoAtestado == itemAtestado.IdTipoAtestado)
                    {
                        listAtestado.Remove(itemAtestado);
                        break;
                    }
                }
            }
        }

        combo.DataTextField = "Descricao";
        combo.DataValueField = "IdTipoAtestado";
        combo.DataSource = listAtestado;
        combo.DataBind();
    }
    protected List<GrupoEmail> CarregaGrupoEmail(int idOrganizacao)
    {
        GrupoEmail grupoEmail = new GrupoEmail();
        List<GrupoEmail> listGrupoEmail = grupoEmail.SelectPorOrgan(idOrganizacao, idWfConfigParametro);

        return listGrupoEmail;
    }
    private void PreencheDescricao()
    {
        if (idWfConfig != 0)
        {
            WorkflowConfig wfConfig = new WorkflowConfig(idWfConfig);

            lblDocumento.Text = wfConfig.TipoDocumento.Descricao;
        }
        else if (idWfConfigData != 0)
        {
            WorkflowConfigData wfConfigData = new WorkflowConfigData(idWfConfigData);

            lblDocumento.Text = wfConfigData.WfConfig.TipoDocumento.Descricao;
            lblTipoPagamento.Text = " - " + wfConfigData.TipoPagamento.Descricao;
        }
    }
    #endregion

    #region Grid Patrocinador
    private void CarregaGruposPatrocinador()
    {
        GridGrupoPatrocinador.DataSource = CarregaGrupoEmail(IdPatrocinador);
    }
    #endregion

    #region Grid Prestador
    private void CarregaGruposPrestador()
    {
        GridGrupoPrestador.DataSource = CarregaGrupoEmail(IdPrestador);
    }
    #endregion

    #endregion
}
